热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java|学习笔记01概论

目录1.解释型语言和编译型语言编译型语言解释型语言Java是解释型语言or编译型语言?2.Java的发展历史3.Java平台的三大版本JavaSE(Ja

目录

1.解释型语言和编译型语言

编译型语言

解释型语言

Java是解释型语言 or 编译型语言?

2.Java的发展历史

3.Java平台的三大版本

Java SE ( Java Platform Standard Edition)

Java EE ( Java Platform Enterprise Edition )

Java ME ( Java Platform Micro Edition)

4.Java开发环境

JDK(Java Development Kit)

JRE(Java Runtime Environment)

JVM(Java Virtual Machine)

5.Java的版本

6.Java程序的执行过程 




1.解释型语言和编译型语言


编译型语言

程序在执行之前需要一个专门的编译过程,把源代码编译成机器语言,运行时不需要再次翻译,直接使用之前编译的结果就行。代表性的编译型语言有C、C++、Pascal等

特点:程序执行效率高;依赖编译器,因此跨平台性要一差些


解释型语言

源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。代表性的解释型语言有Python、Javascript、Shell等

特点:运行效率一般较低,依赖解释器,跨平台性好


Java是解释型语言 or 编译型语言?

Java究竟是解释型语言还是编译型语言,在程序界依然讨论不休

Java同时具有解释型语言和编译型语言的特点,说Java是编译型语言,主要是因为现在的JVM为了效率,都有一些JIT(Just In-Time Compiler,即时编译器)优化,它又会把热点代码(被多次调用的方法、被多次执行的循环体)的.class的二进制代码编译为本地的机器码直接运行

说Java是编译型语言,是因为Java代码编译后的字节码文件不能直接运行在操作系统上,还需要经过JVM解释为机器码才能在对应操作系统上运行

从Java语言的特点来看,其实它更偏向于解释型语言,比如它的运行效率相比C、C++等语言要低一些、它依赖解释器且跨平台性较好。事实上,随着现代语言的发展,以及即时编译等技术的出现,解释型语言和编译型语言的差距已经逐渐缩小,不必太过纠结于此


2.Java的发展历史

Java的前身:1991年4月,Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统,由James Gosling博士领导的绿色计划(Green Project)开始启动,这个计划的产品就是Java语言的前身:Oak(橡树)

Java的诞生:1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“一次编译,到处运行”的口号

JavaOne大会:1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会

Java的三个版本:1999年6月,发布Java的三个版本:J2SE、J2EE、J2ME

命名的重大更新:2005年6月,Java SE6.0发布,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

Oracle公司收购Sun:2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有

JDK1.8发布:2014年3月18日,Oracle公司发布Java SE 1.8

Java最新版本:2022年,JDK19发布


3.Java平台的三大版本


Java SE ( Java Platform Standard Edition)

Java平台标准版,以前称为 J2SE。JavaSE主要用于桌面应用开发,同时也是Java的基础


Java EE ( Java Platform Enterprise Edition )

Java平台企业版,以前称为 J2EE。JavaEE主要用于Web项目的开发,包括十三种核心技术:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF


Java ME ( Java Platform Micro Edition)

Java平台微型版,以前称为 J2ME。JavaME主要为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供开发环境


4.Java开发环境


JDK(Java Development Kit)

Java开发工具包,其中包括编译工具(javac)打包工具(jar)等,也包括JRE


JRE(Java Runtime Environment)

Java运行时环境,其中包括JVM和Java核心类库,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可


JVM(Java Virtual Machine)

Java虚拟机,JVM可以把字节码解释成具体平台上的机器指令执行,这是Java能够“一次编译,到处运行”的原因


5.Java的版本

Java的版本有两种描述,一种是这样的,比如Java 8;另一种是这样的JDK1.8,它们是一个意思。通常程序员口中的Java版本,指的其实是Java的JDK版本,我们只需要知道

JDK1.8 == JDK8 == Java 8 

JDK1.9 == JDK9 == Java 9

至于为什么JDK1.9 == JDK9,这其实是一个历史遗留问题,JDK1.9的下一个版本没有命名为JDK2.0,而是命名为了JDK10,对应着Java 10,有兴趣的同学可以参考这篇博客——Java--Java版本和JDK版本_MinggeQingchun的博客-CSDN博客_java最新版本是多少 


目前Java最新版本是JDK19 (JDK19 == Java 19

可以到Oracle的官网查看Java的最新版本:Java Downloads | Oracle 中国



6.Java程序的执行过程 


推荐阅读
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 本文介绍如何在Java项目中使用Log4j库进行日志记录。我们将详细说明Log4j库的引入、配置及简单应用,帮助开发者快速上手。 ... [详细]
author-avatar
手机用户2502929415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有